<?php
// +----------------------------------------------------------------------
// | Function  Helper
// +----------------------------------------------------------------------
// | Copyright (c) 2020
// +----------------------------------------------------------------------

/**
 * Notes: 公用提示层
 * User: ZhuHaili
 * Return : html
 */
if (!function_exists('htmlAlert')) {
    function htmlAlert($txt, $url = '', $time = 3, $type = -1)
    {
        $html = '<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
        $html .= '<meta name="viewport" content="minimal-ui,width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">';
        $html .= '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">';
        $html .= '<title>提示</title></head><body class="noselect">';
        $html .= '<style>';
        $html .= '*{margin:0;padding:0;}.pop_slide{position: fixed;top: 0;width: 100%;height: 100%;z-index: 999;background: rgba(0,0,0,0.5);}';
        $html .= '.pop_slide .short_textBox{position: absolute;top: 35%;width: 300px;left: 50%;margin-left:-150px;background: #fff;z-index: 1000;text-align: center;border-radius: 10px;}';
        $html .= '.pop_slide .short_textBox .short_text{font-size: 16px;font-size: 16px;line-height: 25px;padding: 30px 20px 30px 20px;text-align: center;}';
        $html .= '.pop_slide .short_textBox .popbtm .left{display:inline-block;width: 50%;text-align: center;line-height: 35px;font-size: 16px;background: #ccc;color: #fff;border-radius: 0 0 0 10px;}';
        $html .= '.pop_slide .short_textBox .popbtm .right{display:inline-block;width: 50%;text-align: center;line-height: 35px;font-size: 16px;background: #3dc6da;color: #fff;border-radius: 0 0 10px 0;}';
        $html .= '</style>';
        $html .= '<div class="pop_slide time"><div class="short_textBox"><div class="short_text">' . $txt . '</div></div></div>';
        $html .= '<script>setTimeout("returnback()",' . ($time * 1000) . ');</script>';
        if ($url) {
            $html .= '<script>function returnback(){window.location.href="' . $url . '";}</script>';
        } else {
            if ($type == 0) {
                $html .= '<script>function returnback(){parent.location.reload();}</script>';
            } else if ($type < 0) {
                //$html .=  '<script>function returnback(){window.location.href=history.go('.$type.');}</script>';
                $html .= '<script>function returnback(){const prevPageUrl = document.referrer;document.location.href = prevPageUrl;}</script>';
            } else if ($type == 1) {
                $html .= '<script>function returnback(){window.location.href=window.document.referrer;}</script>';
            } else {
                $html .= '<script>function returnback(){}</script>';
            }
        }

        $html .= '</body></html>';
        echo $html;
        exit;
    }
}

////////////////////////////////CURL////////////////////////////////

/**
 * Notes: curl_get
 * User: ZhuHaili
 */
if (!function_exists('curlGet')) {
    function curlGet($url)
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        $data = curl_exec($curl);
        if ($data === FALSE) {
            SYS_LOGER(curl_error($curl));
        }
        curl_close($curl);
        return json_decode($data, true);
    }
}

/**
 * Notes：CURL GET请求
 * Desc : $requestUrl, $timeOut=1时可以异步（只等待一秒，后不管返回数据）
 */
if (!function_exists('httpGet')) {
    function httpGet($requestUrl, $timeOut = 10)
    {
        $urlRs = curl_init();
        curl_setopt($urlRs, CURLOPT_URL, $requestUrl);
        curl_setopt($urlRs, CURLOPT_FAILONERROR, false);
        curl_setopt($urlRs, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($urlRs, CURLOPT_TIMEOUT, $timeOut);         // 读取URL的超时时间 10s
        curl_setopt($urlRs, CURLOPT_CONNECTTIMEOUT, $timeOut);  // 连接超时时间 10s
        //判断是否是HTTPS请求
        if (strpos(strtolower($requestUrl), 'https:') !== false) {
            curl_setopt($urlRs, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($urlRs, CURLOPT_SSL_VERIFYHOST, 0);
        }
        //发送消息，获取响应
        $response = curl_exec($urlRs);
        //关闭连接
        curl_close($urlRs);
        return $response;
    }
}

/**
 * Notes：CURL POST请求
 */
if (!function_exists('httpPost')) {
    function httpPost($requestUrl, $postData, $timeOut = 10)
    {
        $urlRs = curl_init();
        curl_setopt($urlRs, CURLOPT_URL, $requestUrl);
        curl_setopt($urlRs, CURLOPT_FAILONERROR, false);
        curl_setopt($urlRs, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($urlRs, CURLOPT_POST, true);
        curl_setopt($urlRs, CURLOPT_POSTFIELDS, $postData);
        curl_setopt($urlRs, CURLOPT_TIMEOUT, $timeOut);         // 读取URL的超时时间 10s
        curl_setopt($urlRs, CURLOPT_CONNECTTIMEOUT, $timeOut); //连接超时时间 10s
        //判断是否是HTTPS请求
        if (strpos(strtolower($requestUrl), 'https:') !== false) {
            curl_setopt($urlRs, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($urlRs, CURLOPT_SSL_VERIFYHOST, 0);
        }
        //发送消息，获取响应
        $reponse = curl_exec($urlRs);
        //关闭连接
        curl_close($urlRs);
        return $reponse;
    }
}

/**
 * Notes：json格式 POST请求
 */
if (!function_exists('httpJson')) {
    function httpJson($requestUrl, $postData, $timeOut)
    {
        $urlRs = curl_init();
        $headers = array(
            "Content-type:application/json;charset='utf-8'",
            "Accept: application/json",
            "Cache-Control: no-cache",
            "Pragma: no-cache"); // 注意请求头配置
        curl_setopt($urlRs, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($urlRs, CURLOPT_URL, $requestUrl);
        curl_setopt($urlRs, CURLOPT_FAILONERROR, false);
        curl_setopt($urlRs, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($urlRs, CURLOPT_POST, true);
        curl_setopt($urlRs, CURLOPT_POSTFIELDS, $postData);
        curl_setopt($urlRs, CURLOPT_TIMEOUT, $timeOut);         // 读取URL的超时时间 10s
        curl_setopt($urlRs, CURLOPT_CONNECTTIMEOUT, $timeOut); //连接超时时间 10s
        //判断是否是HTTPS请求
        if (strpos(strtolower($requestUrl), 'https:') !== false) {
            curl_setopt($urlRs, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($urlRs, CURLOPT_SSL_VERIFYHOST, 0);
        }
        //发送消息，获取响应
        $reponse = curl_exec($urlRs);
        //关闭连接
        curl_close($urlRs);
        return $reponse;
    }
}

////////////////////////////////数组处理////////////////////////////////

/**
 * 多维数组中获取特定的一列数据(5.4及以上才有此函数，兼容5.3)
 */
if(!function_exists('array_column')) {
    function array_column($input, $columnKey, $indexKey = NULL)
    {
        $columnKeyIsNumber = (is_numeric($columnKey)) ? TRUE : FALSE;
        $indexKeyIsNull = (is_null($indexKey)) ? TRUE : FALSE;
        $indexKeyIsNumber = (is_numeric($indexKey)) ? TRUE : FALSE;
        $result = array();
        foreach ((array)$input AS $key => $row)
        {
            if ($columnKeyIsNumber)
            {
                $tmp = array_slice($row, $columnKey, 1);
                $tmp = (is_array($tmp) && !empty($tmp)) ? current($tmp) : NULL;
            }
            else
            {
                $tmp = isset($row[$columnKey]) ? $row[$columnKey] : NULL;
            }
            if ( ! $indexKeyIsNull)
            {
                if ($indexKeyIsNumber)
                {
                    $key = array_slice($row, $indexKey, 1);
                    $key = (is_array($key) && ! empty($key)) ? current($key) : NULL;
                    $key = is_null($key) ? 0 : $key;
                }
                else
                {
                    $key = isset($row[$indexKey]) ? $row[$indexKey] : 0;
                }
            }
            $result[$key] = $tmp;
        }
        return $result;
    }
}

/**
 * @param 数组中找出所有文件路径
 * @return null
 *  从HTML文本中提取所有图片
 */
if (!function_exists('arrayFilePath')) {
    function arrayFilePath($params)
    {
        $filePaths = array();
        foreach ($params as $v) { // 遍历数据
            if (strpos($v, 'uploads/') !== false) { // 每项内容中存在 uploads/ 字符
                $v = html_entity_decode($v); // 数据库内容转换
                if ($v != strip_tags($v)) { // 内容包含 html标签
                    $files = htmlImgPath($v);  // 获取html内容中所有文件路径
                    $filePaths = array_merge($files, $filePaths); // 合并到数组$oldFilePath
                } else { // 不包含HTML标签
                    $filePaths[] = $v; // 数组追加元素
                }
            }
        }
        return $filePaths;
    }
}

/**
 * @param 多维数组转换成一维数组
 * @return null
 *  从HTML文本中提取所有图片
 */
if (!function_exists('arraysArray')) {
    function arraysArray($params)
    {
        static $paramArr;
        foreach ($params as $k => $v) {
            if (is_array($v)) {
                arraysArray($v);
            } else { // 参数为字符串时
                $paramArr[] = $v;
            }
        }
        return $paramArr;
    }
}

////////////////////////////////数据获取////////////////////////////////////

/**
 * 获取13位unix时间戳
 */
if (!function_exists('time13')) {
    function time13()
    {
        list($t1, $t2) = explode(' ', microtime());
        return (float)sprintf('%.0f', (floatval($t1) + floatval($t2)) * 1000);
    }
}

/**
 * 数据hash分配
 */
if (!function_exists('hashZone')) {
    function hashZone($value, $ext = 4, $fix = '')
    {
        $table = substr(md5($value), 0, 2);
        if ($ext == 256) {
            return $fix ? $fix . $table : $table;
        }
        if (256 % $ext != 0) {
            return '';
        }
        $ext = 256 / $ext;
        $table = hexdec($table) / $ext;
        $table = dechex($table);
        $table = str_pad($table, 2, "0", STR_PAD_LEFT);
        return $fix ? $fix . $table : $table;
    }
}

/**
 * 数据date分配
 */
if (!function_exists('dateZone')) {
    function dateZone($date, $leng = 4, $fix = '')
    {
        $time = strtotime($date);
        if (!$time) {
            return '';
        }
        $str = substr(date('YmdHis', $time), 0, $leng);
        return $fix ? $fix . $str : $str;
    }
}

/**
 * 计数单位（返回数值阅读式）
 */
if (!function_exists('txtNumber')) {
    function txtNumber($number)
    {
        if ($number < 1000) {
            return $number;
        }
        if ($number >= 1000 && $number < 10000) {
            return round($number / 1000, 1) . '千';
        }
        if ($number >= 10000 && $number < 1000000) {
            return round($number / 10000, 1) . '万';
        }
        if ($number >= 1000000 && $number < 10000000) {
            return round($number / 1000000) . '百万';
        }
        if ($number >= 10000000 && $number < 100000000) {
            return round($number / 10000000) . '千万';
        }
        if ($number >= 100000000 && $number < 10000000000) {
            return round($number / 100000000, 1) . '亿';
        }
        if ($number >= 10000000000 && $number < 100000000000) {
            return round($number / 10000000000) . '百亿';
        }
        if ($number >= 100000000000 && $number < 1000000000000) {
            return round($number / 100000000000) . '千亿';
        }
        if ($number >= 1000000000000 && $number < 10000000000000) {
            return round($number / 1000000000000) . '万亿';
        }
        if ($number >= 10000000000000) {
            return '万亿+';
        }
    }
}

/**
 * Notes: 变量强制转整形-数组/对象返0
 * User: ZhuHaili
 * Date: 2020/11/6
 * Return : int
 */
if (!function_exists('setInt')) {
    function setInt($var)
    {
        return is_numeric($var) ? intval($var) : 0;
    }
}

/**
 * Notes: 变量强制转字符串-数组/对象返回空
 * User: ZhuHaili
 * Date: 2020/11/6
 * Return : string
 */
if (!function_exists('setStr')) {
    function setStr($var)
    {
        if (is_string($var)) {
            return $var;
        } else if (is_numeric($var)) {
            return $var;
        } else {
            return '';
        }
    }
}

/**
 * Notes: 分页数据设置
 * User: ZhuHaili
 */
if (!function_exists('pageSetArr')) {
    function pageSetArr($page, $counts, $limit = 10)
    {
        if (isset($GLOBALS['CONFIG']['sys_pages']) && intval($GLOBALS['CONFIG']['sys_pages'])) {
            $limit = intval($GLOBALS['CONFIG']['sys_pages']);
        }
        $pageSum = ceil($counts / $limit);
        $pageSum = $pageSum > 1 ? $pageSum : 1;
        $page = intval($page) > 0 ? intval($page) : 1;
        $page = $page > $pageSum ? $pageSum : $page;
        $pages['start'] = $page * $limit - $limit;
        $pages['limit'] = $limit;
        $pages['counts'] = $counts;
        $pages['pageNo'] = $page;
        $pages['pageSum'] = $pageSum;
        return $pages;
    }
}

/**
 * Notes: 获取目录文件转数组
 * User: ZhuHaili
 */
if (!function_exists('getFilePathTree')) {
    function getFilePathTree($dir = '')
    {
        static $navRes;
        if (!is_dir($dir)) {
            return $navRes;
        }
        if (!$handle = opendir($dir)) {
            return $navRes;
        }
        while (($file_dir = readdir($handle)) !== false) {
            $skips = array('.', '..', '.idea', '.svn', '.git');
            if (in_array($file_dir, $skips)) {
                continue;
            }
            if (is_dir($dir . '/' . $file_dir)) {
                $temp[$file_dir] = array();
                $temp[$file_dir] = getFilePathTree($dir . '/' . $file_dir);
                $navRes = $temp;
            } else {
                $temp[] = $file_dir;
                $navRes = $temp;
            }
        }
        ksort($navRes);
        return $navRes;
    }
}

/**
 * 当前文件名
 */
if (!function_exists('php_self')) {
    function php_self(){
        $php_self = substr($_SERVER['PHP_SELF'], strrpos($_SERVER['PHP_SELF'], '/') + 1);
        return $php_self;
    }
}

////////////////////////////////字符串处理////////////////////////////////

/**
 * 去除字符串所有空格换行符等
 */
if (!function_exists('trimAll')) {
    function trimAll($str)
    {
        $qian = array(" ", "　", "\t", "\n", "\r");
        return str_replace($qian, '', $str);
    }
}

/**
 * Notes: 中文字符串截取
 * User: ZhuHaili
 * Return : string
 */
if (!function_exists('mbSubstr')) {
    function mbSubstr($str, $start = 0, $len = 10, $fix = '')
    {
        $str = (string)$str;
        $start = is_numeric($start) ? $start : 0;
        $len = is_numeric($len) ? $len : 0;
        if (!$str) {
            return $str;
        }
        if (!$fix) {
            return mb_substr($str, $start, $len, 'utf-8');
        }
        if ($fix === true) {
            $fix = '…';
        } else if ($fix == 1) {
            $fix = '…';
        } else if ($fix == 2) {
            $fix = '……';
        } else if ($fix == 3) {
            $fix = '...';
        } else if ($fix == 4) {
            $fix = '......';
        } else if ($fix == 5) {
            $fix = '。。。';
        } else if ($fix == 6) {
            $fix = '。。。。。。';
        }
        $fix = (string)$fix;
        $leng = mb_strlen($str, "utf8");
        if ($leng > $len) {
            return mb_substr($str, $start, $len, 'utf-8') . $fix;
        }
        return mb_substr($str, $start, $len, 'utf-8');
    }
}

/**
 * Notes: 过滤特殊字符并转实体（防sql注入）
 * User: ZhuHaili
 * Date: 2019/10/30
 * Return : string
 */
if (!function_exists('sqlCheck')) {
    function sqlCheck($str)
    {
        return htmlspecialchars(str_replace(array("*", "--", "=", "'", '"', "/", "\\", "{", '}', '(', ')'), "", $str));
    }
}

/**
 * 字符编码转换UTF8
 */
if (!function_exists('strUtf8')) {
    function strUtf8($str = '')
    {
        $current_encode = mb_detect_encoding($str, array("ASCII", "GB2312", "GBK", 'BIG5', 'UTF-8'));  //获取原来编码
        $encoded_str = mb_convert_encoding($str, 'UTF-8', $current_encode); //将原来编码转换成utf-8 大小写都可以
        return $encoded_str;
    }
}

/**
 * Notes: 获取随机字符串
 * User: ZhuHaili
 * Return : string
 */
if (!function_exists('strRand')) {
    function strRand($len = 4, $type = 0, $str = '')
    {
        $newStr = ''; //要获取的字符串
        if (preg_match("/[\x7f-\xff]/", $str) && $type != '8' && $type != '9') { //类型不为8,9并且存在中文字符时强制用汉字
            $str = '';
        }
        switch ($type) { //选定字符串类型
            case 1: //纯数字
                $str = '0123456789' . $str;
                break;
            case 2: //纯小写字母
                $str = 'abcdefghijklmnopqrstuvwxyz' . $str;
                break;
            case 3: //纯大写字母
                $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' . $str;
                break;
            case 4: //纯字母
                $str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' . $str;
                break;
            case 5: //小写字母和数字
                $str = 'abcdefghijklmnopqrstuvwxyz0123456789' . $str;
                break;
            case 6: //大写字母和数字
                $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' . $str;
                break;
            case 7: //字母和数字
                $str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' . $str;
                break;
            case 8: //预生成汉字
                $str = '大小多少左右上下白云太阳月亮星工人爸妈爷奶今明后天金木水火土红黄绿蓝紫色衣花公母哭笑苦高兴吃玩乐打豆羊牛马车水电飞鸟东西南北方向' . $str;
                break;
            case 9: //自动生成汉字
                for ($i = 0; $i < $len; $i++) {
                    // 使用chr()函数拼接双字节汉字，前一个chr()为高位字节，后一个为低位字节
                    $strNo = chr(mt_rand(0xB0, 0xD0)) . chr(mt_rand(0xA1, 0xF0));
                    $str .= iconv('GB2312', 'UTF-8', $strNo); // 转码
                }
                break;
            default :
                // 默认，去掉了容易混淆的字母oOlZz和数字012
                $str = 'abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXY3456789' . $str;
                break;
        }
        if ($type != 9) { //所需大于固定长度时
            $strLen = mb_strlen($str, 'UTF8');
            if ($len > $strLen) { //位数过长重复字符串一定次数
                $str = str_repeat($str, $len);
            }
        }
        if ($type == 8 || $type == 9) { //汉字时
            //计算最大长度-1
            $strLen = mb_strlen($str, 'UTF8') - 1;
            //循环 $len 次获得字符串
            for ($i = 0; $i < $len; $i++) {
                $newStr .= mb_substr($str, floor(mt_rand(0, $strLen)), 1, 'UTF8'); //随机长度内数字，截取随机数向后一个长度
            }
        } else { //普通字符串
            $newStr = substr(str_shuffle($str), 0, $len); //字符串随机排序后截取$len长度
        }
        return $newStr;
    }
}

////////////////////////////////目录处理////////////////////////////////

/**
 * Notes: 删除路径下的所有文件夹及文件（保留指定的文件夹）
 */
if (!function_exists('delDir')) {
    function delDir($path)
    {
        //如果是目录则继续
        if (is_dir($path)) {
            //扫描一个文件夹内的所有文件夹和文件并返回数组
            $p = scandir($path);
            foreach ($p as $val) {
                //排除目录中的.和..
                if ($val != "." && $val != "..") {
                    //如果是目录则递归子目录，继续操作
                    if (is_dir($path . $val)) {
                        //子目录中操作删除文件夹和文件
                        delDir($path . $val . '/');
                        //目录清空后删除空文件夹
                        @rmdir($path . $val . '/');
                    } else {
                        //如果是文件直接删除
                        unlink($path . $val);
                    }
                }
            }
        }
    }
}

/**
 * Notes: 删除指定路径所有文件夹及文件（删除指定的文件夹）
 */
if (!function_exists('delDirFile')) {
    function delDirFile($dir) {
        if (!file_exists($dir)) {
            return true;
        }
        if (!is_dir($dir)) {
            return unlink($dir);
        }
        foreach (scandir($dir) as $item) {
            if ($item == '.' || $item == '..') {
                continue;
            }
            $path = $dir . '/' . $item;
            if (is_dir($path)) {
                delDirFile($path);
            } else {
                unlink($path);
            }
        }
        return rmdir($dir);
    }
}

////////////////////////////////html处理////////////////////////////////

/**
 * @param 获取html内容中img所有路径
 * @return null
 *  从HTML文本中提取所有图片
 */
if (!function_exists('htmlImgPath')) {
    function htmlImgPath($content)
    {
        $pattern = "/<img.*?src=[\'|\"](.*?)[\'|\"].*?[\/]?>/";
        preg_match_all($pattern, htmlspecialchars_decode($content), $match);
        if (!empty($match[1])) {
            return $match[1];
        }
        return array();
    }
}

/**
 * @param html内容中字符串替换
 * @return null
 *  从HTML文本中提取所有图片
 */
if (!function_exists('strHtml')) {
    function strHtml($str)
    {
        return html_entity_decode(str_replace('&quot;uploads/','&quot;'.SYS_LINK.'uploads/', $str));
    }
}

/**
 * @param html内容中字符串截取
 * @return null
 */
if (!function_exists('substrHtml')) {
    function substrHtml($str, $start = 0, $leng = 10 , $fix = '1')
    {
        $str = strHtml($str);
        $str = strip_tags($str);
        $str = str_replace(array(PHP_EOL, '&nbsp;'),'',$str);
        return mbSubstr($str, $start, $leng, $fix);
    }
}

////////////////////////////////数据验证////////////////////////////////

/**
 * Notes: 手机号验证
 * User: ZHL
 * Date: 2020/6/6
 */
if (!function_exists('mobileCheck')) {
    function mobileCheck($mobile)
    {
        $pregMobile = '/^1[3456789]\d{9}$/';
        if (!preg_match($pregMobile, $mobile)) {
            return false;
        }
        return true;
    }
}

/**
 * Notes: 邮箱验证
 * User: ZHL
 * Date: 2020/6/6
 */
if (!function_exists('emailCheck')) {
    function emailCheck($email)
    {
        $pregEmail = '/^[a-zA-Z0-9]+([-_.][a-zA-Z0-9]+)*@([a-zA-Z0-9]+[-.])+([a-z]{2,5})$/ims';
        if (!preg_match($pregEmail, $email)) {
            return false;
        }
        return true;
    }
}

/**
 * 图片/文件是否存在
 * 存在返回true,不存在反false
 */
if (!function_exists('fileExistFlag')) {
    function fileExistFlag($url)
    {
        $curl = curl_init($url); // 不取回数据
        curl_setopt($curl, CURLOPT_NOBODY, true);
        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET'); // 发送请求
        $result = curl_exec($curl);
        $found = false; // 如果请求没有发送失败
        if ($result !== false) {
            $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
            if ($statusCode == 200) { //再检查http响应码是否为200
                $found = true;
            }
        }
        curl_close($curl);
        return $found;
    }
}

////////////////////////////////客户端////////////////////////////////////

/**
 * 获取访客IP
 */
if (!function_exists('clientIP')) {
    function clientIP()
    {
        if (getenv('HTTP_CLIENT_IP')) {
            $ip = getenv('HTTP_CLIENT_IP');
        }
        if (getenv('HTTP_X_REAL_IP')) {
            $ip = getenv('HTTP_X_REAL_IP');
        } elseif (getenv('HTTP_X_FORWARDED_FOR')) {
            $ip = getenv('HTTP_X_FORWARDED_FOR');
            $ips = explode(',', $ip);
            $ip = $ips[0];
        } elseif (getenv('REMOTE_ADDR')) {
            $ip = getenv('REMOTE_ADDR');
        } else {
            $ip = '0.0.0.0';
        }
        return $ip;
    }
}

/**
 * 判断是否来自手机移动端
 */
if (!function_exists('isMobile')) {
    function isMobile()
    {
        // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
        if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) {
            return true;
        }
        // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
        if (isset($_SERVER['HTTP_VIA'])) {
            // 找不到为flase,否则为true
            return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
        }
        // 脑残法，判断手机发送的客户端标志,兼容性有待提高。其中'MicroMessenger'是电脑微信
        if (isset($_SERVER['HTTP_USER_AGENT'])) {
            $clientkeywords = array('nokia', 'sony', 'ericsson', 'mot', 'samsung', 'htc', 'sgh', 'lg', 'sharp', 'sie-', 'philips', 'panasonic', 'alcatel', 'lenovo', 'iphone', 'ipod', 'blackberry', 'meizu', 'android', 'netfront', 'symbian', 'ucweb', 'windowsce', 'palm', 'operamini', 'operamobi', 'openwave', 'nexusone', 'cldc', 'midp', 'wap', 'mobile', 'MicroMessenger');
            // 从HTTP_USER_AGENT中查找手机浏览器的关键字
            if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {
                return true;
            }
        }
        // 协议法，因为有可能不准确，放到最后判断
        if (isset ($_SERVER['HTTP_ACCEPT'])) {
            // 如果只支持wml并且不支持html那一定是移动设备
            // 如果支持wml和html但是wml在html之前则是移动设备
            if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) {
                return true;
            }
        }
        return false;
    }
}

/**
 * Notes:获取访客操作系统类型
 */
if (!function_exists('agentOS')) {
    function agentOS()
    {
        if (!isset($_SERVER["HTTP_USER_AGENT"])) {
            return 'Other';
        }
        $agent = strtolower($_SERVER["HTTP_USER_AGENT"]);
        if (strpos($agent, 'windows phone') !== false) {
            return 'WindowsPhone';
        } else if (strpos($agent, 'ipad') !== false) {
            return 'iPad';
        } elseif (strpos($agent, 'iphone') !== false) {
            return 'IOS';
        } else if (strpos($agent, 'android') !== false) {
            return 'Android';
        } elseif (strpos($agent, 'mac') !== false) {
            return 'Mac';
        } else if (strpos($agent, 'windows') !== false) {
            return 'Windows';
        } elseif (strpos($agent, 'meego') !== false) {
            return 'MeeGo';
        } else if (strpos($agent, 'x11') !== false || strpos($agent, 'unix') !== false) {
            return 'Unix';
        } elseif (strpos($agent, 'linux') !== false) {
            return 'Linux';
        }
        return 'Other';
    }
}

/**
 * Notes:获取访客操作系统
 */
if (!function_exists('agentOSv')) {
    function agentOSv()
    {
        if (!isset($_SERVER["HTTP_USER_AGENT"])) {
            return 'Other';
        }
        $agent = strtolower($_SERVER["HTTP_USER_AGENT"]);
        if (strpos($agent, 'windows phone') !== false) {
            return 'WindowsPhone';
        } else if (strpos($agent, 'harmony') !== false) {
            return 'HarmonyOS';
        } else if (strpos($agent, 'ipad')) {
            return 'iPad';
        } else if (strpos($agent, 'iphone') !== false) {
            return 'IOS';
        } else if (strpos($agent, 'android 12') !== false) {
            return 'Android12';
        } else if (strpos($agent, 'android 11') !== false) {
            return 'Android11';
        } else if (strpos($agent, 'android 10') !== false) {
            return 'Android10';
        } else if (strpos($agent, 'android 9') !== false) {
            return 'Android9';
        } else if (strpos($agent, 'android q') !== false) {
            return 'AndroidQ';
        } else if (strpos($agent, 'android 7') !== false) {
            return 'Android7';
        } else if (strpos($agent, 'android 6') !== false) {
            return 'Android6';
        } else if (strpos($agent, 'android 5') !== false) {
            return 'Android5';
        } else if (strpos($agent, 'android 4') !== false) {
            return 'Android4';
        } else if (strpos($agent, 'android') !== false) {
            return 'Android';
        } else if (strpos($agent, 'mac') !== false) {
            return 'MacOs';
        } else if (strpos($agent, 'windows nt 10.0') !== false) {
            return 'Windows10';
        } else if (strpos($agent, 'windows nt 6.2') !== false) {
            return 'Windows8';
        } else if (strpos($agent, 'windows nt 6.1') !== false) {
            return 'Windows7';
        } else if (strpos($agent, 'windows nt 6.0') !== false) {
            return 'WindowsVista';
        } else if (strpos($agent, 'windows nt 5.1') !== false) {
            return 'WindowsXP';
        } else if (strpos($agent, 'windows nt 5.0') !== false) {
            return 'Windows2000';
        } else if (strpos($agent, 'meego') !== false) {
            return 'MeeGo';
        } else if (strpos($agent, 'x11') !== false || strpos($agent, 'unix') !== false) {
            return 'Unix';
        } else if (strpos($agent, 'linux') !== false) {
            return 'Linux';
        } else if (strpos($agent, 'windows nt') !== false) {
            return 'WindowsNT';
        } else if (strpos($agent, 'win') !== false && strpos($agent, '98') !== false) {
            return 'Windows98';
        } else if (strpos($agent, 'win') !== false && strpos($agent, '95') !== false) {
            return 'Windows95';
        } else if (strpos($agent, 'win 9x') !== false && strpos($agent, '4.90') !== false) {
            return 'WindowsME';
        } else if (strpos($agent, 'win') !== false && strpos($agent, '32') !== false) {
            return 'Windows32';
        } else if (strpos($agent, 'sun') !== false && strpos($agent, 'os') !== false) {
            return 'SunOS';
        } else if (strpos($agent, 'ibm') !== false && strpos($agent, 'pc') !== false) {
            return 'IBM-OS/2';
        } else if (strpos($agent, 'mac') !== false && strpos($agent, 'pc') !== false) {
            return 'Macintosh';
        } else if (strpos($agent, 'powerpc') !== false) {
            return 'PowerPC';
        } else if (strpos($agent, 'aix') !== false) {
            return 'AIX';
        } else if (strpos($agent, 'hpux') !== false) {
            return 'HPUX';
        } else if (strpos($agent, 'netbsd') !== false) {
            return 'NetBSD';
        } else if (strpos($agent, 'bsd') !== false) {
            return 'BSD';
        } else if (strpos($agent, 'osf1') !== false) {
            return 'OSF1';
        } else if (strpos($agent, 'irix') !== false) {
            return 'IRIX';
        } else if (strpos($agent, 'freebsd') !== false) {
            return 'FreeBSD';
        } else if (strpos($agent, 'teleport') !== false) {
            return 'teleport';
        } else if (strpos($agent, 'flashget') !== false) {
            return 'flashget';
        } else if (strpos($agent, 'webzip') !== false) {
            return 'webzip';
        } else if (strpos($agent, 'offline') !== false) {
            return 'offline';
        }
        return 'Other';
    }
}

/**
 * Notes:获取访客应用类型
 */
if (!function_exists('agentApp')) {
    function agentApp()
    {
        if (!isset($_SERVER["HTTP_USER_AGENT"])) {
            return 'Other';
        }
        $agent = strtolower($_SERVER["HTTP_USER_AGENT"]);
        if (stripos($agent, 'micromessenger') !== false) {
            return 'WeiXin';        // 微信
        } else if (stripos($agent, 'alipayclient') !== false) {
            return 'Alipay';        // 支付宝
        } else if (stripos($agent, 'qqtheme') !== false) {
            return 'QQ';            // QQ应用
        } else if (stripos($agent, 'heytapbrowser') !== false) {
            return 'HeyTapBrowser'; // 欢太浏览器
        } else if (stripos($agent, 'vivobrowser') !== false) {
            return 'VivoBrowser';   // vivo浏览器
        } else if (stripos($agent, 'mqqbrowser') !== false) {
            return 'MQQBrowser';    // 移动版QQ浏览器
        } else if (stripos($agent, 'qqbrowser') !== false) {
            return 'QQBrowser';     // PC版QQ浏览器
        } else if (stripos($agent, 'baiduboxapp') !== false) {
            return 'Baidu';         // 百度相关应用
        } else if (stripos($agent, 'weibo') !== false) {
            return 'Weibo';         // 新浪微博
        } else if (stripos($agent, 'iqiyi') !== false) {
            return 'IQIYI';         // 爱奇艺
        } else if (stripos($agent, 'aweme') !== false) {
            return 'Douyin';        // 抖音
        } else if (stripos($agent, 'kdtunion_iting') !== false) {
            return 'Himalaya';      // 喜马拉雅
        } else if (stripos($agent, 'dingtalk') !== false) {
            return 'DingTalk';      // 钉钉
        } else if (stripos($agent, 'samsungbrowser') !== false || stripos($agent, 'sm-') !== false) {
            return 'SamsungBrowser';// 三星浏览器
        } else if (stripos($agent, 'huaweieva') !== false) {
            return 'HuaweiBrowser'; // 华为浏览器
        } else if (stripos($agent, 'nokiabrowser') !== false) {
            return 'NokiaBrowser';  // 诺基亚浏览器
        } else if (stripos($agent, 'ucbrowser') !== false) {
            return 'UC';            // UC浏览器
        } else if (stripos($agent, 'quark') !== false) {
            return 'Quark';         // 夸克
        } else if (stripos($agent, 'metasr') !== false) {
            return 'Sougou';        // 搜狗浏览器
        } else if (stripos($agent, 'maxthon') !== false) {
            return 'Maxthon';       // 遨游浏览器
        } else if (stripos($agent, 'se 2.x') !== false) {
            return 'SougouExplorer';// 搜狗浏览器
        } else if (stripos($agent, '2345explorer') !== false) {
            return '2345Explorer';  // 2345浏览器
        } else if (stripos($agent, 'edg') !== false) {
            return 'Edge';          // Edge浏览器
        } else if (stripos($agent, 'msie') !== false || stripos($agent, 'trident') !== false) {
            return 'IE';            // IE浏览器
        } else if (stripos($agent, 'opera') !== false || stripos($agent, 'opr') !== false) {
            return 'Opera';         // 欧朋浏览器
        } else if (stripos($agent, 'firefox') !== false) {
            return 'Firefox';       // 火狐浏览器
        } else if (stripos($agent, 'chrome') !== false) {
            return 'Chrome';        // 谷歌浏览器
        } else if (stripos($agent, 'safari') !== false) {
            return 'Safari';        // 苹果浏览器
        }
        return 'Other';
    }
}

/**
 * Notes: 用户操作次数限制
 * User: ZHL
 * Date: 2020/5/5
 */
if (!function_exists('sessionLimit')) {
    function sessionLimit($name, $count)
    {
        $limitFlag = SYS_SESSIONS_GET($name);
        if (!$limitFlag) {
            $counts = base64_encode(base64_encode(1));
            SYS_SESSIONS_SET($name, $counts);
            return true;
        }
        $counts = base64_decode(base64_decode($limitFlag));
        if ($counts > $count) {
            return false;
        }
        $counts = base64_encode(base64_encode($counts + 1));
        SYS_SESSIONS_SET($name, $counts);
        return true;
    }
}

////////////////////////////////菜单处理////////////////////////////////

/**
 * 菜单无限分级引用方式
 */
if (!function_exists('getTree')) {
    function getTree($arr, $fid = 0, $level = 0)
    {
        $items = array();
        foreach ($arr as $v) {
            $items[$v['id']] = $v;
        }
        $result = array();
        foreach ($items as $k => $item) {
            if (isset($items[$item['fid']])) {
                $items[$item['fid']]['child'][] = &$items[$k];
            } else {
                $result[] = &$items[$k];
            }
        }
        return $result;
    }
}

/**
 * 菜单等级分配
 */
if (!function_exists('getNavLevel')) {
    function getNavLevel($arr, $fid = 0, $level = 0, $flag = 0)
    {
        if (!$flag) {
            $GLOBALS['valNavLevel'] = array();
            $flag = 1;
        }
        foreach ($arr as $k => $v) {
            $vfid = intval($v['fid']);
            $id = intval($v['id']);
            $fid = intval($fid);
            if ($vfid == $fid) {
                $tmp = $v;
                $tmp['level'] = $level;
                $GLOBALS['valNavLevel'][] = $tmp;
                unset($arr[$k]);
                getNavLevel($arr, $id, $level + 1, $flag);
            }
        }
        return $GLOBALS['valNavLevel'];
    }
}

/**
 * 菜单等级分配
 */
/*if (!function_exists('getNavLevel')) {
    function getNavLevel($arr, $fid=0, $level=0){
        static $navRes;//静态变量 只会被初始化一次
        foreach($arr as $k=>$v){
            $vfid = intval($v['fid']);
            $id = intval($v['id']);
            $fid = intval($fid);
            if($vfid==$fid){
                $tmp = $v;
                $tmp['level'] = $level;
                $navRes[] = $tmp;
                unset($arr[$k]);
                getNavLevel($arr,$id,$level+1);
            }
        }
        return $navRes;
    }
}*/

/**
 * Notes: 面包屑菜单匹配
 * Date: 2020/11/18
 * Return : array();
 */
if (!function_exists('menuCrumbs')) {
    function menuCrumbs($arr, $id)
    {
        $list = array();
        while ($id) {
            $flag = false;
            foreach ($arr as $v) {
                if ($v['id'] == $id) {
                    $n['url'] = $v['url'];
                    $n['menuname'] = $v['menuname'];
                    array_unshift($list, $n);
                    $id = $v['fid'];
                    $flag = true;
                }
            }
            if (!$flag) {
                break;
            }
        }
        return $list;
    }
}

////////////////////////////////cms公共////////////////////////////////

/**
 * 密码加密规则
 */
if (!function_exists('setPwd')) {
    function setPwd($str)
    {
        $str = md5(md5(md5($str)));
        return strtoupper(substr($str, 0, strlen($str) - 2));
    }
}

/**
 * Notes: 缩略图重置路径(生成的缩略图路径不会保存，根据裁剪的大小进行匹配路径)
 * User: ZhuHaili
 */
if (!function_exists('thumImgPath')) {
    function thumImgPath($imgPath, $w = 0, $h = 0)
    {
        if (!$imgPath) {
            return '';
        }
        $imgPaths = explode('/', $imgPath);
        $imgNewName = end($imgPaths);
        $imgNewPath = '';
        foreach ($imgPaths as $v) {
            if ($v != $imgNewName) {
                $imgNewPath = $imgNewPath ? $imgNewPath . '/' . $v : $v;
            }
        }
        $imgNewPath = str_replace('/thum', '', $imgNewPath);
        $imgNewPath = $imgNewPath . '/thum' . $w . 'x' . $h . '/' . $imgNewName;
        return $imgNewPath;
    }
}

/**
 * Notes: 图片/文件路径组装
 * User: ZhuHaili
 * Param: $imgPath:图片路径，
 * Param: $cloud是否云路径,默认false则SYS_HOST,true则需要配置OSS_HOST，
 * Param: $host是否包含了http://或者https://开头的URL时不处理，无则追加SYS_HOST或者OSS_hOST
 */
if (!function_exists('fileImgPath')) {
    function fileImgPath($imgPath, $cloud = false, $host = '')
    {
        // 为空返回
        if (!$imgPath) {
            return $imgPath;
        }
        // 如果url开头http或者https开头的
        if (substr(strtolower($imgPath), 0, 4) == 'http') {
            return $imgPath;
        }
        /*if(strpos(strtolower($imgPath), 'http:') !== false){
            return $imgPath;
        }
        if(strpos(strtolower($imgPath), 'https:') !== false){
            return $imgPath;
        }*/
        // 开头是 // 时根据当前项目添加http或者https
        if (substr($imgPath, 0, 2) == '//') {
            $HTTP_TYPE = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https:' : 'http:';
            return $HTTP_TYPE . $imgPath;
        }
        // 如果指定了host域名
        if ($host) {
            // 如果链接存在指定的域名时返回
            if (strpos(strtolower($imgPath), strtolower($host)) !== false) {
                return $imgPath;
            }
        }
        // 相对路径时，如果设置了云域名，拼接云域名，否则默认用当前项目域名拼接
        return !$cloud ? SYS_LINK . $imgPath : OSS_HOST . $imgPath;
    }
}

/**
 * Notes: 图片文件路径组装2
 * User: ZhuHaili
 */
if (!function_exists('fileImgPath2')) {
    function fileImgPath2($imgPath)
    {
        if (!$imgPath) {
            return $imgPath;
        }
        if (strpos($imgPath, 'http://') === false && strpos($imgPath, 'https://') === false) {
            $imgPaths = HTTP_PATH . $imgPath;
            if (fileExistFlag($imgPaths)) {
                return $imgPaths;
            } else {
                return OSS_HOST . $imgPath;
            }
        }
        return $imgPath;
    }
}

/**
 * url来源
 */
if (!function_exists('urlFromTitle')) {
    function urlFromTitle($referer = '')
    {
        $referer = $referer ? $referer : (isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '');
        $dbFroms = array(
            $_SERVER['HTTP_HOST'] => '直接访问', // 直接网址访问
            'baidu.com' => '百度',      // 中国(国内最大)
            'google.com' => '谷歌',     // 美国(全球最大)
            'so.com' => '360搜索',      // 中国(奇虎360)
            'sogou.com' => '搜狗搜索',  // 中国(奇虎360)
            'soso.com' => '搜搜',       // 中国(腾讯)
            'bing.com' => '必应',       // 美国(微软)
            'sm.cn' => '神马',          // 中国(UC优视与阿里巴巴)
            'toutiao.eastday.com' => '头条搜索',  // 中国(字节跳动)
            'youdao.com' => '有道搜索',   // 中国(网易)
            'quark.sm.cn' => '夸克搜索', 'quark.cn' => '夸克搜索',   // 中国(阿里巴巴)
            'yahoo.com' => '雅虎搜索',    // 美国
            'duckduckgo.com' => 'DuckDuckGo',     // 美国(注重个人隐私)
            'magi.com' => 'Magi',         // 中国(基于AI的搜索引擎)
            'seznam.cz' => 'Seznam',      // 捷克共和国最大搜索引擎
            'ecosia.org' => 'Ecosia',     // 德国
            'naver.com' => 'Naver',       // 韩国
            'yandex.eu' => 'Yandex',      // 俄罗斯(俄内最大搜索引擎)
        );
        foreach ($dbFroms as $k => $v) {
            if (strpos($referer, $k) !== false) {
                return $v;
            }
        }
        return 'Other';
    }
}

/**
 * count表名
 */
if (!function_exists('countTableName')) {
    function countTableName()
    {
        $countsType = isset($GLOBALS['ADMIN']['counts_type']) ? $GLOBALS['ADMIN']['counts_type'] : 1;
        return 'syslog_count_' . ($countsType == 1 ? date('Y') : date('Ym'));
    }
}

////////////////////////////////cms路由////////////////////////////////

/**
 * 菜单路由
 */
if (!function_exists('setClassUrl')) {
    function setClassUrl($param)
    {
        if (!isset($param['id']) || !$param['id'] || !isset($param['tmpl']) || !$param['tmpl']) {
            return '';
        }
        $id = intval($param['id']);
        $url = trim($param['tmpl']);
        $htmlflag = isset($param['tmpltype']) ? intval($param['tmpltype']) : 1;
        $gourl = isset($param['weburl']) && $param['weburl'] ? (strpos($param['weburl'],'javascript') === false ? SYS_HOST.$param['weburl'] : $param['weburl']) : '';
        $gourl = isset($param['gourl']) && $param['gourl'] ? trim($param['gourl']) : $gourl;
        if (!$gourl) {
            $gourl = $url . SYS_URL_FIX;
            if ($htmlflag == 2) {
                $gourl = $url . '/id/' . $id . SYS_URL_FIX;
            } else if ($htmlflag == 3) {
                $gourl = $url . '/id/' . $id . SYS_URL_FIX;
            }
        }
        return str_replace("SYS_HOST", SYS_HOST, $gourl);//  strtr($gourl, "SYS_HOST", SYS_HOST);
    }
}

/**
 * 文章路由
 */
if (!function_exists('setEssayUrl')) {
    function setEssayUrl($param)
    {
        if (!isset($param['id']) || !$param['id']) {
            return '';
        }
        $classM = isset($param['mould']) && $param['mould'] ? $param['mould'] : '';
        if (isset($param['tpl']) && $param['tpl']) {
            $classM = $param['tpl'];
        }
        $classM = str_replace(array(" ", "　", "\t", "\n", "\r"), array("", "", "", "", ""), $classM);
        if (!$classM) {
            return '';
        }
        return SYS_HOST . $classM . '/id/' . $param["id"] . SYS_URL_FIX;
    }
}

/**
 * 菜单路由v2
 */
if (!function_exists('getMenuUrl')) {
    function getMenuUrl($mid, $tmpl, $temltype = 1, $gourl = '', $weburl = '')
    {
        if (!$mid) {
            return '';
        }
        if (!$tmpl) {
            return '';
        }
        if ($gourl) {
            $gourl = strtolower(trim($gourl));
            $gourl = str_replace("SYS_HOST", SYS_HOST, $gourl);
            $gourl = strtr($gourl, "\\", "/");
            $gourl = strpos($gourl, 'http:') === false && strpos($gourl, 'https:') === false ? strtr($gourl, "//", "/") : $gourl;
            return $gourl;
        }
        if($weburl){
            return strpos($weburl,'javascript:') === false ? SYS_HOST.$weburl : $weburl;
        }
        $gourl = $tmpl . SYS_URL_FIX;
        if ($temltype == 2) {
            $gourl = $tmpl . '/mid/' . $mid . SYS_URL_FIX;
        } else if ($temltype == 3) {
            $gourl = $tmpl . '/mid/' . $mid . SYS_URL_FIX;
        }
        return SYS_HOST . $gourl;
    }
}

/**
 * 文章路由v2
 */
if (!function_exists('getEssayUrl')) {
    function getEssayUrl($eid, $temp = '', $mould = '')
    {
        if (!$eid) {
            return '';
        }
        $essayTemp = $temp ? $temp : $mould;
        $essayTemp = strtolower(trim($essayTemp));
        //$essayTemp = str_replace(array(" ","　","\t","\n","\r"),array("","","","",""), $essayTemp);
        if (!$essayTemp) {
            return '';
        }
        return SYS_HOST . $essayTemp . '/eid/' . $eid . SYS_URL_FIX;
    }
}

/**
 * url追加参数
 */
if (!function_exists('getResetUrl')) {
    function getResetUrl($url, $param = array())
    {
        if (!$url) {
            return '';
        }
        $url = strtolower(trim($url));
        $url = str_replace(SYS_URL_FIX, '', $url);
        if ($param) {
            if (is_array($param)) {
                foreach ($param as $k => $v) {
                    $url .= "/$k/$v";
                }
            }
        }
        $url .= SYS_URL_FIX;
        return $url;
    }
}

////////////////////////////////cms后台////////////////////////////////

/**
 * Notes: 权限初始值
 * User: ZhuHaili
 */
if (!function_exists('powerInfoListDeVal')) {
    function powerInfoListDeVal()
    {
        return array('menu_ids' => array(), 'classfun' => array(), 'essayfun' => array());
    }
}

/**
 * Notes: 获取后台管理员等级类型
 * User: ZhuHaili
 */
if (!function_exists('getUserLevel')) {
    function getUserLevel()
    {
        $loginUserInfo = SYS_SESSIONS_GET(LOGIN_SESSION_FIX . 'alogin_info');
        $userType = '';
        if (isset($loginUserInfo['levels']) && $loginUserInfo['levels']) {
            $userType = $loginUserInfo['levels'];
        }
        return $userType;
    }
}

/**
 * Notes: 获取后台管理员ID
 * User: ZhuHaili
 */
if (!function_exists('getUserId')) {
    function getUserId()
    {
        $loginUserInfo = SYS_SESSIONS_GET(LOGIN_SESSION_FIX . 'alogin_info');
        $userId = '';
        if (isset($loginUserInfo['id']) && $loginUserInfo['id']) {
            $userId = $loginUserInfo['id'];
        }
        return $userId;
    }
}

/**
 * Notes: 获取后台管理员帐号名称
 * User: ZhuHaili
 */
if (!function_exists('getUserName')) {
    function getUserName()
    {
        $loginUserInfo = SYS_SESSIONS_GET(LOGIN_SESSION_FIX . 'alogin_info');
        $nickname = '';
        if (isset($loginUserInfo['nickname']) && $loginUserInfo['nickname']) {
            $nickname = $loginUserInfo['nickname'];
        }
        return $nickname;
    }
}

/**
 * Notes: 获取管理员登录次数
 * User: ZhuHaili
 */
if (!function_exists('getUserLoginCount')) {
    function getUserLoginCount()
    {
        $loginUserInfo = SYS_SESSIONS_GET(LOGIN_SESSION_FIX . 'alogin_info');
        $logincount = '1';
        if (isset($loginUserInfo['logincount']) && $loginUserInfo['logincount']) {
            $logincount = $loginUserInfo['logincount'];
        }
        return $logincount;
    }
}